home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 5
/
Amiga Plus Sonderheft 1996 #5.iso
/
programme
/
imagedesk304
/
autocat
/
autocat2.idesk
< prev
next >
Wrap
Text File
|
1996-05-03
|
11KB
|
427 lines
/* ---------------- Steuerdatei für ImageDesk ------------------- */
/* */
/* A U T O C A T */
/* */
/* AREXX-Script zur vollautomatisierten Steuerung von Katalogen */
/* 2. Teil: */
/* Steuerscript bei Klick auf Bild */
/* */
/* von Ulrich Röcher, roecher@fts.uni-siegen.de */
/* */
/*----------------------------------------------------------------*/
OPTIONS RESULTS
if( ADDRESS() ~= "IDESK_REXXPORT" ) then
ADDRESS IDESK_REXXPORT
PARSE ARG iname itype ipos
/* -------------------------------------------------------------- */
CTYP=getclip('CTYP') /* stelle den Befehlsgrafik-Typ fest */
CDIR=getclip('CDIR') /* stelle das Befehlsdirectory fest */
Command=getclip('Command') /* stelle den richtigen Katalog fest */
if itype=CTYP then do
/* Befehle ausführen */
if POS(".",iname)=0 then iname=iname||'.fehlerhaftes_AREXX'
DO WHILE POS('/',iname)>0
iname=substr(iname,POS('/',iname)+1,length(iname))
end
if POS(":",iname)>0 then iname=substr(iname,Pos(':',iname)+1,length(iname))
if POS(".",iname)>0 then iname=substr(iname,1,Pos(".",iname)-1)
select
when iname="Weiter" then do
/* gehe zur nächsten Thumbnail-Seite */
ihvz=getclip('ihvz')
ADIR=getclip('ADIR')
MAXENTRY=getclip('MAXENTRY')
Aktu=getclip('Aktu')
AnzTN=getclip('AnzTN')
CLEANDESK
cat=CDIR||Command
if CDIR=ADIR then do
OPENCAT cat 1 1
end
else do
OPENCAT cat 1 2
end
if pos("-",AnzTN)=0 then do
AWert=AnzTN
AnzTN=""
end
else do
x=length(AnzTN)
do until substr(AnzTN,x,1)="-"
x=x-1
end
tempx=substr(AnzTN,1,x-1)
AWert=substr(AnzTN,x+1)
AnzTN=tempx
end
istTN=Val(AWert)
Lfd_Nr=2
AnzKats= words(ihvz)
temp=2
DO until (Aktu>AnzKats) | (Lfd_Nr=(MAXENTRY-1))
name=ADIR||Word(ihvz,Aktu)
OPENCAT name istTN+1 (MAXENTRY-1-Lfd_Nr)
GETSYSINFO THUMBSUSED
Lfd_Nr = RESULT
kat=Lfd_Nr-temp+istTN
if AnzTN="" then do
AnzTN=CHR(kat)
end
else do
AnzTN=AnzTN||"-"||CHR(kat)
end
temp=Lfd_Nr
istTN=0
Aktu=Aktu+1
end
if Lfd_Nr=MAXENTRY-1 then OPENCAT CDIR||Command 3 1
dummy=setclip('Aktu',Aktu-1)
dummy=setclip('AnzTN',AnzTN)
end
when iname="Zurück" then do
/* gehe zurück zur letzten Thumbnail-Seite */
ihvz=getclip('ihvz')
ADIR=getclip('ADIR')
MAXENTRY=getclip('MAXENTRY')
Aktu=getclip('Aktu')
AnzTN=getclip('AnzTN')
x=length(AnzTN)
Do while (substr(AnzTN,x,1)~="-") & (x~=0)
x=x-1
end
tempx=substr(AnzTN,1,x-1)
AWert=substr(AnzTN,x+1,length(AnzTN)-x)
AnzTN=tempx
z=Val(AWert)
Aktu=Aktu-1
GETSYSINFO THUMBSUSED
IstTN = RESULT
if IstTN=MAXENTRY then do
IstTN=IstTN-3
end
else do
IstTN=IstTN-2
end
halt=0
DO until halt=1
x=length(AnzTN)
Ende=0
Do until (x<1) | (Ende=1)
x=x-1
if x>0 then do
if (substr(AnzTN,x,1)="-") then Ende=1
end
end
if x=0 then do
AWert=AnzTN
AnzTN=""
end
else do
tempx=substr(AnzTN,1,x-1)
AWert=substr(AnzTN,x+1,length(AnzTN)-x)
AnzTN=tempx
end
Aktu=Aktu-1
aw=Val(AWert)
z=z+aw
if z>(IstTN+MAXENTRY-3) then halt=1
end
z=z-(IstTN+MAXENTRY-3)
Aktu=Aktu+1
if (AnzTN="") & (z>1) then do
Anfang=0
end
else do
Anfang=1
end
CLEANDESK
cat=CDIR||Command
if (Aktu=1) & (Anfang=1) then do
/* am Anfang, lädt nur hoch */
if CDIR=ADIR then do
nop
end
else do
OPENCAT cat 2 1
end
afg=0
z=1
Lfd_Nr=1
end
else do
if CDIR=ADIR then do
OPENCAT cat 2 1
end
else do
OPENCAT cat 1 2
end
afg=1
Lfd_Nr=2
end
istTN=z
AnzKats= words(ihvz)
temp=2
DO until (Aktu>AnzKats) | (Lfd_Nr=(MAXENTRY-1))
name=ADIR||Word(ihvz,Aktu)
OPENCAT name (istTN+afg) (MAXENTRY-1-Lfd_Nr)
GETSYSINFO THUMBSUSED
Lfd_Nr = RESULT
if afg=0 then afg=1
kat=Lfd_Nr-temp+istTN
if AnzTN="" then do
AnzTN=CHR(kat)
end
else do
AnzTN=AnzTN||"-"||CHR(kat)
end
temp=Lfd_Nr
istTN=0
Aktu=Aktu+1
end
if Lfd_Nr=MAXENTRY-1 then OPENCAT CDIR||Command 3 1
dummy=setclip('Aktu',Aktu-1)
dummy=setclip('AnzTN',AnzTN)
end
when iname="Hoch" then do
ADIR=getclip('ADIR')
MAXENTRY=getclip('MAXENTRY')
do x=(length(ADIR)-1) to 1 by -1
if substr(ADIR,x,1)='/' then do
ADIR=substr(ADIR,1,x)
leave
end
if substr(ADIR,x,1)=':' then do
ADIR=substr(ADIR,1,x)
leave
end
end
dummy=setclip('ADIR',ADIR)
dummy=adress command 'cd 'ADIR
CLEANDESK
if ADIR=CDIR then do
/* Kommando-Verzeichnis */
x=1
y=0
ihvz=""
do until x=0
if y>0 then do
wx=CHR(y)
if pos("0",wx)=1 then wx=substr(wx,2,length(wx)-1)
erg="."||wx
end
else do
erg=""
end
name="Head.cat"||erg
name1=CDIR||name
if exists(name1) then do
if ihvz~="" then ihvz=ihvz||" "
ihvz=ihvz||name
x=1
end
else do
x=0
end
y=y+1
end
dummy=setclip('ihvz',ihvz)
end
else do
/* nur ein Verzeichnis hoch */
dummy=setclip("ADIR",ADIR)
dummy=adress command 'cd 'ADIR
fl=SHOWDIR(ADIR,'File')
IF fl='' then DO
ERRORMSG '"Fehlerhafter Directoryeintrag"'
exit
end
/* Hier Sortierroutine */
IF fl~='' THEN DO
fl=translate(fl,' ','"')
fl=UPPER(fl)
fl2=''
DO i=1 TO WORDS(fl)
Buff=WORD(fl,1)
Delli=1
DO j=1 TO WORDS(fl)
IF WORD(fl,j)<Buff THEN DO
Buff=WORD(fl,j)
Delli=j
END
END
fl=DELWORD(fl,Delli,1)
fl2=fl2||Buff||' '
END
fl=LEFT(fl2,LENGTH(fl2)-1)
END
dummy=setclip('ihvz',fl)
ihvz=fl
namen=WORD(fl,1)
cat=CDIR||Command
OPENCAT cat 2 1
end
Aktu=1 /* Aktu: Nummer des aktuell zu ladenden Katalogs */
Lfd_Nr=1
temp=1
AnzTN='' /* AnzTN: Zeichenkette enthält Anzahl der TNs der Katas. */
AnzKats= words(ihvz)
DO until (Aktu>AnzKats+1) | (Lfd_Nr=(MAXENTRY-1))
name=ADIR||Word(ihvz,Aktu)
OPENCAT name 1 (MAXENTRY-1-Lfd_Nr)
GETSYSINFO THUMBSUSED
Lfd_Nr = RESULT
kat=Lfd_Nr-temp
tempx=CHR(kat)
if AnzTN="" then do
AnzTN=CHR(kat)
end
else do
AnzTN=AnzTN||"-"||CHR(kat)
end
temp=Lfd_Nr
Aktu=Aktu+1
end
if Lfd_Nr=MAXENTRY-1 then OPENCAT CDIR||Command 3 1
dummy=setclip('Aktu',Aktu-1)
AnzTN=strip(AnzTN)
dummy=setclip('AnzTN',AnzTN)
end
otherwise do
/* alles andere ist ein CD-Befehl */
ADIR=getclip('ADIR')
MAXENTRY=getclip('MAXENTRY')
ADIR=ADIR||iname||'/'
dummy=setclip("ADIR",ADIR)
dummy=setclip('AnzTN',"")
dummy=setclip('Aktu',0)
dummy=adress command 'cd 'ADIR
fl=SHOWDIR(ADIR,'File')
IF fl='' then DO
ERRORMSG '"Fehlerhafter Directoryeintrag"'
exit
end
/* Hier Sortierroutine */
IF fl~='' THEN DO
fl=translate(fl,' ','"')
fl=UPPER(fl)
fl2=''
DO i=1 TO WORDS(fl)
Buff=WORD(fl,1)
Delli=1
DO j=1 TO WORDS(fl)
IF WORD(fl,j)<Buff THEN DO
Buff=WORD(fl,j)
Delli=j
END
END
fl=DELWORD(fl,Delli,1)
fl2=fl2||Buff||' '
END
fl=LEFT(fl2,LENGTH(fl2)-1)
END
dummy=setclip('ihvz',fl)
ihvz=fl
namen=WORD(fl,1)
CLEANDESK
cat=CDIR||Command
OPENCAT cat 2 1
Aktu=1 /* Aktu: Nummer des aktuell zu ladenden Katalogs */
Lfd_Nr=1
temp=1
AnzTN='' /* AnzTN: Zeichenkette enthält Anzahl der TNs der Katas. */
AnzKats= words(ihvz)
DO until (Aktu>AnzKats) | (Lfd_Nr=(MAXENTRY-1))
name=ADIR||Word(ihvz,Aktu)
OPENCAT name 1 (MAXENTRY-1-Lfd_Nr)
GETSYSINFO THUMBSUSED
Lfd_Nr = RESULT
kat=Lfd_Nr-temp
tempx=CHR(kat)
if AnzTN="" then do
AnzTN=CHR(kat)
end
else do
AnzTN=AnzTN||"-"||CHR(kat)
end
temp=Lfd_Nr
Aktu=Aktu+1
end
if Lfd_Nr=MAXENTRY-1 then OPENCAT CDIR||Command 3 1
dummy=setclip('Aktu',Aktu-1)
AnzTN=strip(AnzTN)
dummy=setclip('AnzTN',AnzTN)
end
end
end
else do
/* Bild zeigen */
VIEWIMAGE iname
end
exit
CHR: PROCEDURE
/* wandelt Zahl in Zeichenkette */
parse arg zahl
Wert=''
DO until zahl<10
zw=Zahl//10
Zahl=Zahl%10
ch=d2c(zw+48)
Wert=ch||Wert
end
ch=d2c(Zahl+48)
wert=ch||Wert
Return Wert
VAL: PROCEDURE
/* wandelt Wert aus Zeichenkette in Zahl */
parse arg zk
Stelle=1
Wertx=0
zk=strip(zk)
x=length(zk)
do until x=0
Ziffer=substr(zk,x,1)
Wertx=Wertx + (pos(Ziffer,"123456789") * Stelle)
Stelle=Stelle * 10
x=x-1
end
Return Wertx